body {
  background: -webkit-gradient(linear, left top, left bottom, from(#3800e7), to(#8a15ff));
  background: linear-gradient(#3800e7, #8a15ff);
  height: 100vh;
  font-size: calc(14px + (26 - 14) * ((100vw - 300px) / (1600 - 300)));
  font-family: "DM Mono", monospace;
  font-weight: 300;
  overflow: hidden;
  color: white;
  text-align: center;
}

h1 {
  font-size: 3em;
  margin-bottom: 0.2em;
}

h2 {
  font-size: 2em;
}

html,
body {
  width     : 100%;
  height    : 100%;
  text-align: center;
}


@-webkit-keyframes hue-rotate {
  from {
    -webkit-filter: hue-rotate(0);
    -moz-filter   : hue-rotate(0);
    -ms-filter    : hue-rotate(0);
    filter        : hue-rotate(0);
  }

  to {
    -webkit-filter: hue-rotate(360deg);
    -moz-filter   : hue-rotate(360deg);
    -ms-filter    : hue-rotate(360deg);
    filter        : hue-rotate(360deg);
  }
}

@keyframes hue-rotate {
  from {
    -webkit-filter: hue-rotate(0);
    -moz-filter   : hue-rotate(0);
    -ms-filter    : hue-rotate(0);
    filter        : hue-rotate(0);
  }

  to {
    -webkit-filter: hue-rotate(360deg);
    -moz-filter   : hue-rotate(360deg);
    -ms-filter    : hue-rotate(360deg);
    filter        : hue-rotate(360deg);
  }
}


.main {
  height: 100vh;
  display: -webkit-box;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
          flex-direction: column;
  flex-wrap: wrap;
  position: relative;
  -webkit-box-pack: center;
          justify-content: center;
  -webkit-box-align: center;
          align-items: center;
}
.main:before, .main:after {
  content: "";
  display: block;
  position: absolute;
  z-index: -3;
}
.main:before {
  right: 0;
  bottom: -19;
  height: 30em;
  width: 30em;
  border-radius: 30em;
  background: -webkit-gradient(linear, left top, left bottom, from(#3800e7), to(#8a15ff));
  background: linear-gradient(#3800e7, #8a15ff);
  align-self: flex-end;
  -webkit-animation: gradient-fade 8s ease-in-out 3s infinite alternate;
          animation: gradient-fade 8s ease-in-out 3s infinite alternate;
}
.main:after {
  top: 0;
  left: 30;
  height: 10em;
  width: 10em;
  border-radius: 10em;
  background: -webkit-gradient(linear, left top, left bottom, from(#3800e7), to(#8a15ff));
  background: linear-gradient(#3800e7, #8a15ff);
  -webkit-animation: gradient-fade-alt 6s ease-in-out 3s infinite alternate;
          animation: gradient-fade-alt 6s ease-in-out 3s infinite alternate;
}
.main__text-wrapper {
  position: relative;
  padding: 2em;
}
.main__text-wrapper:before, .main__text-wrapper:after {
  content: "";
  display: block;
  position: absolute;
}
.main__text-wrapper:before {
  z-index: -1;
  top: -3em;
  right: -3em;
  width: 13em;
  height: 13em;
  opacity: 0.7;
  border-radius: 13em;
  background: -webkit-gradient(linear, left top, left bottom, from(#15e0ff), to(#8a15ff));
  background: linear-gradient(#15e0ff, #8a15ff);
  -webkit-animation: rotation 7s linear infinite;
          animation: rotation 7s linear infinite;
}
.main__text-wrapper:after {
  z-index: -1;
  bottom: -20em;
  width: 20em;
  height: 20em;
  border-radius: 20em;
  background: -webkit-gradient(linear, left top, left bottom, from(#d000c5), to(#8a15ff));
  background: linear-gradient(#d000c5, #8a15ff);
  -webkit-animation: rotation 7s linear infinite;
          animation: rotation 7s linear infinite;
}

.arrow {
  z-index: 1000;
  opacity: 0.5;
  position: absolute;
}
.arrow--top {
  top: 0;
  left: -5em;
}
.arrow--bottom {
  bottom: 0;
  right: 3em;
}

.circle {
  -webkit-transform: translate(50%, -50%) rotate(0deg);
          transform: translate(50%, -50%) rotate(0deg);
  -webkit-transform-origin: center;
          transform-origin: center;
}
.circle--ltblue {
  height: 20em;
  width: 20em;
  border-radius: 20em;
  background: -webkit-gradient(linear, left top, left bottom, from(#15e0ff), to(#3800e7));
  background: linear-gradient(#15e0ff, #3800e7);
}

.backdrop {
  position: absolute;
  width: 100vw;
  height: 100vh;
  display: block;
  background-color: pink;
}

.dotted-circle {
  position: absolute;
  top: 0;
  right: 0;
  opacity: 0.3;
  -webkit-animation: rotation 38s linear infinite;
          animation: rotation 38s linear infinite;
}

.draw-in {
  stroke-dasharray: 1000;
  stroke-dashoffset: 1000;
  -webkit-animation: draw 15s ease-in-out alternate infinite;
          animation: draw 15s ease-in-out alternate infinite;
}

@-webkit-keyframes draw {
  from {
    stroke-dashoffset: 1000;
  }
  to {
    stroke-dashoffset: 0;
  }
}

@keyframes draw {
  from {
    stroke-dashoffset: 1000;
  }
  to {
    stroke-dashoffset: 0;
  }
}
.item-to {
  -webkit-animation-duration: 10s;
          animation-duration: 10s;
  -webkit-animation-iteration-count: infinite;
          animation-iteration-count: infinite;
  -webkit-transform-origin: bottom;
          transform-origin: bottom;
}

.bounce-1 {
  -webkit-animation-name: bounce-1;
          animation-name: bounce-1;
  -webkit-animation-timing-function: ease;
          animation-timing-function: ease;
}

.bounce-2 {
  -webkit-animation-name: bounce-2;
          animation-name: bounce-2;
  -webkit-animation-timing-function: ease;
          animation-timing-function: ease;
}

.bounce-3 {
  -webkit-animation-name: bounce-3;
          animation-name: bounce-3;
  -webkit-animation-timing-function: ease;
          animation-timing-function: ease;
}

@-webkit-keyframes bounce-1 {
  0% {
    -webkit-transform: translateY(0);
            transform: translateY(0);
  }
  50% {
    -webkit-transform: translateY(50px);
            transform: translateY(50px);
  }
  100% {
    -webkit-transform: translateY(0);
            transform: translateY(0);
  }
}

@keyframes bounce-1 {
  0% {
    -webkit-transform: translateY(0);
            transform: translateY(0);
  }
  50% {
    -webkit-transform: translateY(50px);
            transform: translateY(50px);
  }
  100% {
    -webkit-transform: translateY(0);
            transform: translateY(0);
  }
}
@-webkit-keyframes bounce-2 {
  0% {
    -webkit-transform: translateY(0);
            transform: translateY(0);
  }
  50% {
    -webkit-transform: translateY(-30px);
            transform: translateY(-30px);
  }
  100% {
    -webkit-transform: translateY(0);
            transform: translateY(0);
  }
}
@keyframes bounce-2 {
  0% {
    -webkit-transform: translateY(0);
            transform: translateY(0);
  }
  50% {
    -webkit-transform: translateY(-30px);
            transform: translateY(-30px);
  }
  100% {
    -webkit-transform: translateY(0);
            transform: translateY(0);
  }
}
@-webkit-keyframes bounce-3 {
  0% {
    -webkit-transform: translateY(0);
            transform: translateY(0);
  }
  50% {
    -webkit-transform: translateY(30px);
            transform: translateY(30px);
  }
  100% {
    -webkit-transform: translateY(0);
            transform: translateY(0);
  }
}
@keyframes bounce-3 {
  0% {
    -webkit-transform: translateY(0);
            transform: translateY(0);
  }
  50% {
    -webkit-transform: translateY(30px);
            transform: translateY(30px);
  }
  100% {
    -webkit-transform: translateY(0);
            transform: translateY(0);
  }
}
@-webkit-keyframes rotation {
  from {
    -webkit-transform: rotate(0deg);
            transform: rotate(0deg);
  }
  to {
    -webkit-transform: rotate(360deg);
            transform: rotate(360deg);
  }
}
@keyframes rotation {
  from {
    -webkit-transform: rotate(0deg);
            transform: rotate(0deg);
  }
  to {
    -webkit-transform: rotate(360deg);
            transform: rotate(360deg);
  }
}
@-webkit-keyframes gradient-fade {
  from {
    -webkit-transform: translate(10%, -10%) rotate(0deg);
            transform: translate(10%, -10%) rotate(0deg);
  }
  to {
    -webkit-transform: translate(50%, -50%) rotate(360deg);
            transform: translate(50%, -50%) rotate(360deg);
  }
}
@keyframes gradient-fade {
  from {
    -webkit-transform: translate(10%, -10%) rotate(0deg);
            transform: translate(10%, -10%) rotate(0deg);
  }
  to {
    -webkit-transform: translate(50%, -50%) rotate(360deg);
            transform: translate(50%, -50%) rotate(360deg);
  }
}
@-webkit-keyframes gradient-fade-alt {
  from {
    -webkit-transform: translate(-20%, 20%) rotate(0deg);
            transform: translate(-20%, 20%) rotate(0deg);
  }
  to {
    -webkit-transform: translate(-60%, 60%) rotate(360deg);
            transform: translate(-60%, 60%) rotate(360deg);
  }
}
@keyframes gradient-fade-alt {
  from {
    -webkit-transform: translate(-20%, 20%) rotate(0deg);
            transform: translate(-20%, 20%) rotate(0deg);
  }
  to {
    -webkit-transform: translate(-60%, 60%) rotate(360deg);
            transform: translate(-60%, 60%) rotate(360deg);
  }
}


#mainButton {
  margin-top: 20%;
  display: block;
  -webkit-animation: hue-rotate 10s linear infinite;
  animation        : hue-rotate 10s linear infinite;
}

.button {
  -webkit-font-smoothing: antialiased;
  background-color      : #222;
  border                : none;
  color                 : #ffffff;
  display               : inline-block;
  font-family           : 'Montserrat', sans-serif;
  font-size             : 14px;
  font-weight           : 100;
  text-decoration       : none;
  -webkit-user-select   : none;
  -moz-user-select      : none;
  -ms-user-select       : none;
  user-select           : none;
  letter-spacing        : 1px;
  color                 : white;
  padding               : 20px 40px;
  text-transform        : uppercase;
  -webkit-transition    : all 0.1s ease-out;
  transition            : all 0.1s ease-out;
}

.button:hover {
  background-color: #90feb5;
  color           : #fff;
}

.button:active {
  -webkit-transform: scale(0.95);
  transform        : scale(0.95);
}

.button--bubble {
  position  : relative;
  z-index   : 2;
  color     : white;
  background: none;
}

.button--bubble:hover {
  background: none;
}

.button--bubble:hover+.button--bubble__effect-container .circle {
  background: #44fd82;
}

.button--bubble:hover+.button--bubble__effect-container .button {
  background: #44fd82;
}

.button--bubble:active+.button--bubble__effect-container {
  -webkit-transform: scale(0.95);
  transform        : scale(0.95);
}

.button--bubble__container {
  position: relative;
  display : inline-block;
}

.button--bubble__container {
  top       : 50%;
  margin-top: -25px;
}

.button--bubble__container .effect-button {
  position          : absolute;
  width             : 31%;
  height            : 8%;
  top               : 50%;
  left              : 25%;
  z-index           : 1;
  -webkit-transform : translateY(-50%);
  transform         : translateY(-50%);
  background        : #222;
  -webkit-transition: background 0.1s ease-out;
  transition        : background 0.1s ease-out;
}

.button--bubble__effect-container {
  position          : absolute;
  display           : block;
  width             : 200%;
  height            : 400%;
  top               : -150%;
  left              : -50%;
  -webkit-filter    : url("#goo");
  filter            : url("#goo");
  -webkit-transition: all 0.1s ease-out;
  transition        : all 0.1s ease-out;
  pointer-events    : none;
}

.button--bubble__effect-container .circle {
  position          : absolute;
  width             : 25px;
  height            : 25px;
  border-radius     : 15px;
  background        : #222;
  -webkit-transition: background 0.1s ease-out;
  transition        : background 0.1s ease-out;
}

.button--bubble__effect-container .circle.top-left {
  top : 40%;
  left: 27%;
}

.button--bubble__effect-container .circle.bottom-right {
  bottom: 40%;
  right : 27%;
}

.goo {
  position  : absolute;
  visibility: hidden;
  width     : 1px;
  height    : 1px;
}
